use std::rc::Rc;
fn main() {
    let rc_example = "Rc example".to_string();
    {
        println!("---rc_a is created---");
        let rc_a = Rc::new(rc_example);
        println!("Reference count<rc_a>: {}", Rc::strong_count(&rc_a));
        {
            println!("---rc_b is created---");
            let rc_b = Rc::clone(&rc_a);
            println!("Reference count<rc_b>: {}", Rc::strong_count(&rc_b));
            println!("Reference count<rc_a>: {}", Rc::strong_count(&rc_a));

        //     如果两者内部的值相等的话,则两个`Rc`相等
            println!("rc_a == rc_b: {}", rc_a.eq(&rc_b));
            println!("rc_a == rc_b: {}", rc_a == rc_b);
        //     直接使用值的方法
            println!("Length of the value inside rc_a: {}", rc_a.len());
            println!("Value of rc_b: {rc_b}");
            println!("---rc_b is dropped out of scope---");
        }
        println!("Reference count<rc_a>: {}", Rc::strong_count(&rc_a));
        println!("---rc_a is dropped out of scope---");
    }
//     报错！`rc_example`已经移入`rc_a`中，无法再使用
//     而且当`rc_a`被删除时,`rc_example`也会被删除
//     println!("rc_example: {rc_example}");
//     ^ value borrowed here after move
}
